//执行封装逻辑，可以把coft文件夹下的所有文件里的操作统一
//引入要用到的模块
let fs = require('fs');
let path = require('path');
let router = require('koa-router')();

//读取coft文件夹的根目录，用遍历筛选出除index.js的js文件
function fillcoffee() {
    //异步读取coffee文件夹下的所有文件,__dirname表示js文件所在的文件夹(目录)的绝对路径(/coffee/home.js或login.js)
    let fill = fs.readdirSync(__dirname);
    //遍历筛选出除index.js的js文件
   let fallpath= fill.filter(fillName => {
        return fillName.endsWith('.js') && fillName!='index.js';
    })
    return fallpath;
}

//注册路由
function register(fill){

    //遍历coffee文件夹下的所有文件
    fill.forEach(item=>{
        
        //将当前文件夹的路径和具体的js文件的绝对路径拼接，得到完整的文件路径
        let filePath=path.join(__dirname,item);
        //读取路径文件下的具体路由
        let fileRouter=require(filePath);

        //循环遍历路由，i表示js文件下暴露文件的键值对
        for(var i in fileRouter){
            //获取路由中键值对的类型
            let fillType=fileRouter[i][0];
            //获取路由中键值对的函数
            let fillFunc=fileRouter[i][1];
            //判断请求类型,是get就执行get的函数，是post就执行post的函数
            if(fillType==='get'){
                router.get(i,fillFunc);
            }else{
                router.post(i,fillFunc);
            }
        }
    })
}

//向外暴露一个函数(路由)
module.exports=()=>{
    //调用fillcoffee函数就获取了coffee文件夹下的所有js文件了
    let full=fillcoffee();
    //调用register函数
    register(full);
    //返回路由
    return router.routes();
}